/***********************************************************************
    filename:   StaticImageRenderer.h
    created:    Tue Jul 5 2005
    author:     Paul D Turner <paul@cegui.org.uk>
*************************************************************************/

#ifndef _StaticImageRenderer_h_
#define _StaticImageRenderer_h_

#include "../hgeImage.h"
#include "renderers/StaticRenderer.h"
#include "RendererProperties.h"

#if defined(_MSC_VER)
#	pragma warning(push)
#	pragma warning(disable : 4251)
#endif

/*!
\brief
    StaticImage class for the FalagardBase module.

    This class requires LookNFeel to be assigned.  The LookNFeel should provide the following:

    States:
        - Enabled                     - basic rendering for enabled state.
        - Disabled                    - basic rendering for disabled state.
        - EnabledFrame                - frame rendering for enabled state
        - DisabledFrame               - frame rendering for disabled state.
        - WithFrameEnabledBackground  - backdrop rendering for enabled state with frame enabled.
        - WithFrameDisabledBackground - backdrop rendering for disabled state with frame enabled.
        - NoFrameEnabledBackground    - backdrop rendering for enabled state with frame disabled.
        - NoFrameDisabledBackground   - backdrop rendering for disabled state with frame disabled.
        - WithFrameImage              - image rendering when frame is enabled
        - NoFrameImage                - image rendering when frame is disabled (defaults to WithFrameImage if not present)
*/
class StaticImageRenderer : public StaticRenderer
{
public:
    static const String TypeName;       //!< type name for this widget.

    /*!
    \brief
        Constructor
    */
    StaticImageRenderer(const String& type);

    /*!
    \brief
        Set the image for this StaticImageRenderer widget
    */
    void setImage(const Image* img);

    /*!
    \brief
        Get the image for this StaticImageRenderer widget
    */
    const Image* getImage(void) const   {return d_image;}

    void render();

protected:
    // static properties
    static RendererProperties::Image d_imageProperty;

    // implementation data
    const Image* d_image;
};

#if defined(_MSC_VER)
#	pragma warning(pop)
#endif

#endif  // end of guard _StaticImageRenderer_h_
